function foo () {
    console.log(this.a); // 2
}

function doFoo(fn){
    console.log(this);
    fn();
}

var obj = { a: 1, foo };
var a = 2;
var obj2 = { a: 3, doFoo }

obj2.doFoo(obj.foo);

/**
 * 如果把一个函数当成参数传递到另一个函数的时候，也会发生隐式丢失的问题，且与包裹着它的函数的this指向无关。在
 * 非严格模式下，会把该函数的this绑定到window上，严格模式下绑定undefined
*/